#include <iostream>
#include <string>
#include <ctemplate/template.h>

int main()
{
    std::string in_html = "./test.html";
    std::string value = "比特";
    // 形成字典数据
    ctemplate::TemplateDictionary root("test"); // unordered_map<> test;
    root.SetValue("key", value);

    // 获取被渲染网页对象
    ctemplate::Template *tpl = ctemplate::Template::GetTemplate(in_html, ctemplate::DO_NOT_STRIP); // 保持网页原貌

    // 添加字典数据到网页中
    std::string out_html;
    tpl->Expand(&out_html, &root);

    // 完成渲染
    std::cout << out_html << std::endl;
    return 0;
}

// #include <iostream>
// #include <vector>
// #include <boost/algorithm/string.hpp>
// int main()
// {
//     std::vector<std::string> token;
//     const std::string str = "1:回文数::::::::简单:1:30000";
//     boost::split(token, str, boost::is_any_of(":"), boost::algorithm::token_compress_on);//token_compress_on压缩
//     for (auto &iter : token)
//         std::cout << iter << std::endl;
//     return 0;
// }

// #include <iostream>
// #include <sys/time.h>
// #include <sys/resource.h>
// #include <unistd.h>
// #include <signal.h>
// #include <string>
// #include <jsoncpp/json/json.h>
// int main()
// {
//     // 序列化：将结构化的数据转化成一个字符串 方便在网络中传输
//     // Value是一个Json的中间类，可以填充KV值
//     Json::Value root;
//     root["code"] = "mycode";
//     root["name"] = "杜超";
//     root["age"] = "20";

//     // Json::StyledWriter writer;
//     Json::FastWriter writer;
//     std::string str = writer.write(root);
//     std::cout << str << std::endl;
//     return 0;
// }

// 资源不足，导致os终止进程，是通过信号终止的
// void handler(int signo)
// {
//     std::cout << "signo : " << signo << std::endl;
//     exit(1);
// }
// int main()
// {

//     for (int i = 0; i < 31; i++)
//         signal(i, handler);
//     // 为所有信号都注册了 handler 函数，当收到 SIGXCPU 信号时，handler 函数会被调用，输出信号编号，然后进程终止
//     struct rlimit rt;
//     rt.rlim_cur = 1;             // 软限制为1秒
//     rt.rlim_max = RLIM_INFINITY; // 硬限制为无穷
//     setrlimit(RLIMIT_CPU, &rt);  // CPU的运行时间限制
//     while (1)
//         ;

//     // struct rlimit rt;
//     // rt.rlim_cur = 1024 * 1024 * 40; // 软限制为40MB空间
//     // rt.rlim_max = RLIM_INFINITY;    // 硬限制为无穷
//     // setrlimit(RLIMIT_AS, &rt);      // 虚拟内存大小限制
//     // int count = 0;
//     // while (1)
//     // {
//     //     int *p = new int[1024 * 1024]; // 一次申请1MB的空间
//     //     count++;
//     //     std::cout << "size: " << count << std::endl;
//     //     sleep(1);
//     // }
//     return 0;
// }